Spatially Distorted Signaling: How Opinions Against Wind Infrastructure Delay Our Transition to Renewable Energy
This study analyzes the activity of U.S. wind power plants (2000-2016) to understand how population density, income, and anti-wind opinions impacted wind plant operations. The motivation for this project was to investigate these attributes as they related to local resistance against renewable energy developments, in hopes to understand potential delays in our transition to a more sustainable future.
Statistical Analysis
Logit
Wind Power
Energy Access
Sustainable Energy Decarbonization Transition
Author
Sofia Ingersoll
Published
December 14, 2023
Spatially Distorted Signaling: How Opinions Against Wind Infrastructure Delay Our Transition to Renewable Energy
Spatial Distorted Signalling (SDS) describes the mobilization of minority opinion holders to electorally push-back and promote legislation that aligns with their beliefs. Leah Stokes (et.al) has explored the SDS phenomenon as a natural experiment in her piece, Electoral Backlash against Climate Policy: A Natural Experiment on Retrospective Voting and Local Resistance to Public Policy (2016). The findings in this paper describe that rural Canadian communities had a greater ability to mobilize and organize political push back against majority chair holders in parliament after the passing of legislation which invited the development of wind infrastructure through incentives.
Stokes’ subsequent work, Replication Data for: Prevalence and Predictors of Wind Energy Opposition in North America (2023), further explores variables like political affiliation and local mobilization. This study aims to reproduce these outcomes with U.S. wind plant data to understand how population density, income, and anti-wind opinions impact wind plant activity, providing insights into local resistance and its effects on renewable energy projects.
Main Takeaways
Population Density:
A unit increase in population density is associated with a slight increase in the odds of having an operational wind plant. This suggests that areas with higher population densities are marginally more likely to host wind plants and less likely to experience minority holder opinions taking the majority. Therein, as urbanization and population density increase, it becomes increasingly feasible and advantageous for these areas to invest in and support wind energy projects.
Median Income:
Higher income bracket wealthier areas may exert more influence on energy policies due to their resources, potentially impacting local energy investments. Higher-income areas may use their financial resources to affect energy policy decisions, potentially hindering wind infrastructure development. Areas with higher incomes might prioritize different types of energy investments based on their resources and political connections. Lower income bracket individuals in lower income brackets may have less influence and lower advocacy for wind infrastructure.
An increase in median income is linked to a decrease in the odds of having an operational wind plant. Higher income areas show a lower likelihood of wind plant activity, potentially due to different local priorities or economic factors. Uneven socio-economic power-dynamics could lead to minority opinion holders preventing the development of wind power infrastructure, alongside other renewable energy solutions. Overall, this suggests that socioeconomic factors play a influential role in shaping the types of renewable energy projects that are pursued and highlights the need for tailored strategies to address diverse community priorities in renewable energy planning.
Anti-Wind Infrastructure Opinion:
Areas with higher opposition to wind infrastructure are less likely to have operational wind plants. This aligns with expectations that local opposition impacts the establishment of wind plants. Therefore, addressing and mitigating local resistance is essential for enhancing the feasibility and acceptance of wind energy initiatives.
The world’s largest wind turbine, MySE-16-260. Includes a rotor diameter of 853 feet to produce 16-megawatt, located in Pingtan, Fujian Province, China (Yang, Getty Images).
The data source that was utilized in this project, US Wind Data, focuses on the public stance on wind infrastructure for census tract regions within a 3 km buffer zone of a wind infrastructure project. It contains categorical variables, binary variables, continuous socioeconomic factors such as % of races, % precinct political GOP affiliated voting share, mobilization tactics, and more. For simplicity’s sake, we’re going to focus on the variables below.
Variables of Interest:
Name
Description
status
Describes the project operating status. In this study, we have converted it into a binary variable: 1 is operating, 0 is not_operating.
pop_den
Tract-level 2010 census data for population density (per mi^2)
med_inc
Tract-level 2010 census data for median income ($)
is_anti_wind
Binary measure of wind opposition: 1 is against wind power developments, 0 is pro wind power developments.
U.S. Wind Power Plant Locations
Mapping Wind Power Infrastructure Plants in the U.S.
Before diving in, let’s get a sense of where we’ll be investigating. Using `ggplot()`, we can visualize the locations of wind infrastructure power plants throughout the United States. To achieve a more granular map, we’ll need to utilize another data set to create a base layer for our map in order to observe these wind plants with respect to state and county jurisdictions.
Below we will use the package sf to convert the lat/long vector data into a raster geometry column. In this single line, we will also be assigning the CRS EPSG:4326 to the sf data frame. Coordinate Reference Systems, CRS, are required in order for the data to be projected onto a map. The CRS was selected because it provides a relatively proportionate display of the United States. We are open to suggestions regarding our CRS if a different project better fits our data.
Code
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# ---- Load Libraries ----#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# The following libraries were selected based on their functionality and ability to optimize our data for mapping.# Loading Librarieslibrary(tidyverse) # essential r package library(sf) # package simplifies spatial dataframeslibrary(tmap)library(terra)library(broom)library(stars)library(sjPlot)library(naniar)library(cowplot)library(leaflet)library(maptiles) library(ggthemes)library(ggspatial)library(patchwork)library(kableExtra)set.seed(99)knitr::opts_chunk$set(echo = T, warning = F, message = F)#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# ---- Read & Raster ----#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# reading in & storing datawind_data <-read.csv("../data/wind_data/wind_data_usa.csv") # Confirm the Data Loaded Properly#head(wind_data) # displays the first 6 rows of the data# Let's read in our datawind_sf <- wind_data %>%# creates geometry column with desired crs st_as_sf(coords =c("longitude", "latitude"), crs =4326) # quick CRS check#glimpse(crs(wind_sf)) # output should reveal WGS84, EPSG:4326#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# ---- Check Point! ----#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# Let's stop and see if our outputs are what we expect.# Were the lat/long columns correctly converted into a geometry column?# setdiff() is a way to quickly determine the differences between two data sets.# Sweet! we are looking good#setdiff(colnames(wind_sf), colnames(wind_data))#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# ---- Map Wind Plants ----#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# First visual of the U.S. wind data provided by the geometry pointswind_plants <-ggplot(wind_sf) +annotation_map_tile(type ="osm") +geom_sf(col ='darkgreen',alpha =0.5,size =3)wind_plants
Visualizing the Data Distribution
Before jumping into any analysis, it’s important to get a sense of how the data is distributed and if there are any underlying trends or biases. The two visual aids we’re going to create are a violin plot with jitter points (left) and a comparative regression plot using OLS and GLM (right). Combining two figures provides us fuller insights into both the general trend and changes in probability of the binary outcome for the population density predictor.
We will employ a series of models to describe the effect of census tract level population density on the operating status of wind power infrastructure. A combination of binary and interaction logit regression will be considered. The initial model will apply OLS regression, this is really a formality to demonstrate why OLS is not the correct approach for interpreting our relationships of interest. The following will be a model with two continuous variables. Binary Indicator Variable will be status column: opertating is 1, and not_operating will be 0.
These variables focus more on regionally dependent factors that intuitively seem to have an impact on mobilization variables that we don’t have time to cover in this project. We’ll be working with a mix of discrete and continuous data, so there some wrangling will be necessary to run the regressions we’re interested in.
Code
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# ---- Inspect & Standarize Data ----#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# Determining Variable Assignments for OLS#unique(wind_sf$status) # displays unique values in this# Need to rename status output variables# creating two categories: operating & not_operating# We are removing 'Operating | Decommissioned' because it skews the dataunwanted_status <-"Operating | Decommissioned"replacement_status <-"Uncertain Status"wind_sf$status[wind_sf$status== unwanted_status]<-"Uncertain Status"# were we successful ?#unique(wind_sf$status) # displays unique values in this# cleaning out NAs for OLSwind_sf <- wind_sf %>%filter(is.na(status) =='FALSE') %>%filter(is.na(is_anti_wind) =='FALSE') %>%filter(is.na(pop_den) =='FALSE') %>%filter(is.na(med_inc) =='FALSE') %>%filter(is.na(median_age) =='FALSE') %>%filter(is.na(n_turbs) =='FALSE')# were we successful ?#unique(wind_sf$status) # displays unique values in this# if_else preserves the data type but replaces unwanted valueswind_us <- wind_sf %>%mutate(status =if_else( status %in%c('Cancelled', 'Out of service (temporarily)', 'Standby', 'Decommissioned', 'Uncertain Status'), 'not_operating','operating') )# are our only outputs "operating" and "not_operating"?#print(unique(wind_us$status))# status as factor and reassigned valueswind_us <- wind_us %>%mutate(status =case_when(status =="operating"~1, status =="not_operating"~0))#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# ---- Check point! ----#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# are our only outputs 0 or 1?paste("The indicator column contains", {unique(wind_us$status)})
[1] "The indicator column contains 1" "The indicator column contains 0"
The visualizations display the majority of the distribution lies within the actively operating wind infrastructure plants. This is an early indication of the degree of sample bias influencing our analysis. A trend of inactive plants and lower population density is notable in both figures. Collectively they demonstrate smaller population densities contain more inactive wind infrastructure plants. This could be attributed to with weight of a singular vote in regions with smaller demographics.
Local mobilization of minority opinion holders in these regions have a greater availability to push back against policymakers. However, this visual does not encapsulate all of the necessary information required to determine this with full certainty. Our data set has low availability for non-operating infrastructure and as such, in the regression figure on the right these are being treated as outliers.
Code
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# ---- Violin Distribution ----#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# Create the violin plot with log scaledensity_plot <-ggplot(data = wind_us, aes(x =factor(status), y = pop_den, fill =factor(status))) +geom_violin(alpha =0.6, color ="darkblue") +geom_jitter(col ="#F84C0B",width =0,height =0.05,alpha =0.35,size =4) +labs(title ="Population Density vs Wind Power Plant Operating Status",subtitle="Logorithimic Distribution",x ="Activation Status",y =expression("Population Density (Log Scale, "~ mi^-2~")")) +# rename x-axis labels for clarityscale_x_discrete(labels =c("0"="Inactive", "1"="Active")) +# Apply logarithmic scale to y-axisscale_y_log10() +theme_538() +scale_fill_manual(values =c("skyblue", "darkblue")) +# Adjust title font and alignmenttheme(plot.title =element_text(size =40,family ="Georgia", face ="bold",hjust = .99,color ="#293F2C"), # Adjust subtitle font and alignmentplot.subtitle =element_text(size =38,family ="Georgia",color ="#293F2C",hjust =0.5), axis.title =element_text(size =36,family ="Georgia",color ="#293F2C"),axis.text =element_text(size =34,family ="Georgia",color ="#293F2C"),# Move legend to the bottomlegend.position ="top", # Remove legend title if not neededlegend.title =element_blank(), # Adjust legend text sizelegend.text =element_text(size =34,family ="Georgia",color ="#293F2C"), # Background color for legendlegend.key =element_rect(fill ="grey94", color ="grey94"), plot.background =element_rect(color ="#FDFBF7") ) +coord_flip()#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# ---- Jitter OLS + GLM ----#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# Optimized jitter plot with smooth linesjitter_plot_optimized <-ggplot(data = wind_us, aes(x = pop_den, y = status)) +# assign color to legend geom_jitter(aes(color ="Data Points"),width =0,height =0.05,alpha =0.6,size =4) +# Adjusted size for better visibilitygeom_smooth(method ="lm",se =FALSE,aes(color ="OLS Line"),size =1.2, # Slightly thicker line for visibilitylinetype ="solid") +geom_smooth(method ="glm",se = T,aes(color ="GLM Line"),size =1.2,linetype ="dashed",method.args =list(family ="binomial")) +labs(title ="Population Density vs Wind Power Plant Operating Status",subtitle="Logorithimic Distribution Regression Comparison",y ="Activation Status",x =expression("Population Density (Log Scale, "~ mi^-2~")")) +# rename yaxis labels for clarityscale_y_continuous(breaks =c(0, 1),labels =c("0"="Inactive", "1"="Active")) +scale_x_log10() +theme_538() +# Adjust title font and alignmenttheme(plot.title =element_text(size =40,family ="Georgia", face ="bold",hjust = .99,color ="#293F2C"), # Adjust subtitle font and alignmentplot.subtitle =element_text(size =38,family ="Georgia",hjust =0.5,color ="#293F2C"), axis.title =element_text(size =36,family ="Georgia",color ="#293F2C"),axis.text =element_text(size =34,family ="Georgia",color ="#293F2C"),# Move legend to the bottomlegend.position ="top", # Remove legend title if not neededlegend.title =element_blank(), # Adjust legend text sizelegend.text =element_text(size =34,family ="Georgia",color ="#293F2C"), # Background color for legendlegend.key =element_rect(fill ="grey94", color ="grey94"), plot.background =element_rect(color ="#FDFBF7") ) +scale_color_manual(name ="Legend", # Title for the legendvalues =c("Data Points"="#F84C0B", "OLS Line"="blue", "GLM Line"="skyblue"),labels =c("Data Points"="Data Points", "OLS Line"="OLS Line", "GLM Line"="GLM Line"))# Combine plots horizontallycombined_plot <- density_plot + jitter_plot_optimized +# Arrange plots side-by-sideplot_layout(ncol =2) combined_plot
Comprehensive Interaction Model Containing Binary Predictor Variable
Coefficient and Odds Ratio Table
To interpret the model, we compute the odds ratios for each coefficient, providing insight into how each variable and its interactions affect wind plant activity.
This table provides a comprehensive view of how each variable and their interactions contribute to the likelihood of wind plant activity, facilitating a better understanding of the model’s results.
Main Effects: The odds ratios for pop_den, med_inc, and is_anti_wind indicate the individual effects of each variable on the likelihood of having an active wind plant.
Interaction Effects: The interaction terms show how the relationship between each pair of variables influences the odds of wind plant activity. For instance, the interaction between pop_den and med_inc captures how the effect of population density on wind plant status changes with median income.
Code
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# ---- Comprehensive Model ----#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# Fit the comprehensive modelcomprehensive_model <-glm(status ~ pop_den * med_inc * is_anti_wind,data = wind_us,family ='binomial')# Extract coefficients and compute odds ratioscoef_summary <-data.frame(Term =names(coef(comprehensive_model)),Estimate =coef(comprehensive_model),Odds_Ratio =exp(coef(comprehensive_model)))# Create and style the tablekable(coef_summary, format ="html", digits =4, caption ="Table 1: Summary of Coefficients and Odds Ratios") %>%kable_styling(bootstrap_options =c("striped", "hover", "condensed", "responsive"), position ="center", font_size =12)
To gain a deeper understanding of the logistic regression model, we will leverage the Odds Ratio. We will create a table displaying the Odds Ratio, which quantifies how frequently a binary event occurs relative to its baseline. This approach provides a comprehensive and more efficient way to interpret the relationships between variables in the model.
Our analysis of wind plant activity using logistic regression models has provided valuable insights into the factors influencing the presence of operational wind plants.The probability distribution of having an active local wind plant across different population density and median income quantiles reveals some notable trends:
Code
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# ---- GLM Prob by Cat ----#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# Quantile grouping (0–25%, 25–50%, 50–75%, 75–100%)wind_us <- wind_us %>%mutate(income_q =ntile(med_inc, 4),density_q =ntile(pop_den, 4),income_label =factor(paste0(seq(25, 100, by =25)[income_q], "%"),levels =paste0(seq(25, 100, by =25), "%") ),density_label =factor(paste0("Percentile ", seq(25, 100, by =25)[density_q], "%"),levels =paste0("Percentile ", seq(25, 100, by =25), "%") ),anti_label =ifelse(is_anti_wind ==1, "Anti-Wind", "Pro/Neutral") )# Predict probabilitieswind_us$predicted_prob <-predict(comprehensive_model, newdata = wind_us, type ="response")# Average predicted probability per groupplot_data <- wind_us %>%group_by(income_label, density_label, anti_label) %>%summarise(probability =mean(predicted_prob, na.rm =TRUE), .groups ="drop") %>%mutate(income_numeric =as.numeric(factor(income_label, levels =unique(income_label))))#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# ---- GLM Visualation by Cat ----#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ggplot(plot_data, aes(x = income_label, y = probability, fill = density_label)) +geom_bar(stat ="identity", position ="dodge") +facet_wrap(~ anti_label) +geom_smooth(aes(x = income_numeric, y = probability, group = density_label),method ="lm", color ="#F84C0B", se =FALSE, size =1) +scale_fill_manual(values =c("#cae6f2", "#7abbe2", "#2a7fb8", "#084081"),name ="Pop Density Quantile" ) +labs(title ="Predicted Probability of Active Wind Infrastructure Projects",subtitle ="By Income Quantile, Population Density Quantile, and Wind Energy Sentiment",x ="Median Income Quantile Group",y ="Predicted Probability" ) +theme_minimal() +theme(text =element_text(family ="Georgia", size =22),axis.text.x =element_text(size =12),axis.text.y =element_text(size =14),axis.title.x =element_text(size =16),axis.title.y =element_text(size =16),plot.title =element_text(size =22, face ="bold", hjust =1.3),plot.subtitle =element_text(size =18, hjust = .5),legend.position ="top",legend.title =element_text(size =16),legend.text =element_text(size =14),legend.key.size =unit(0.5, "cm"),legend.spacing.x =unit(0.2, "cm"),legend.spacing.y =unit(0.2, "cm"),legend.background =element_rect(fill ="white", color ="grey100", size =0.5) ) +guides(fill =guide_legend(title =expression("Population Density (Log Scale, "~ mi^-2~")"), title.position ="top",title.hjust =0.5))
Question:
Could an assumption be made in which areas at risk of spatially distorted signalling have a greater propensity for higher median income and lower population density?
Let’s touch a bit on the social psychology at potentially at play.
Donations and Lobbying:
Addressing this question involves considering the impact of political and economic influence on energy policy. Verba, Schlozman, and Brady argue that “higher-income individuals typically have more resources and time to engage in political activities, which can influence local energy policies” (Verba, Schlozman, & Brady, 1995, p. 234). This might suggest that wealthier areas could exert more influence to prioritize different energy investments or limit the visibility of such projects. Conversely, those in lower income brackets may have fewer resources and less time for such activities, potentially resulting in lower levels of wind plant advocacy and adoption.
High-income individuals or entities may make substantial donations to lobbying groups or political campaigns to promote specific agendas, including energy policies that align with their interests. Hertel and Tsigas highlight that “financial contributions and lobbying play a significant role in shaping policy decisions” (Hertel & Tsigas, 2002, p. 78). This could mean that higher-income areas, with their greater financial resources, might be able to affect decisions on wind plant locations or energy policy. This financial influence can interfere the development and implementation of local energy projects.
Wealthier communities may prioritize different types of energy projects based on their specific economic and environmental goals. They may lobby to invest in more adaptable or luxury technologies rather than large-scale wind projects (Wolsink, 2007). Overall, this suggests that socioeconomic factors play a influential role in shaping the types of renewable energy projects that are pursued and highlights the need for tailored strategies to address diverse community priorities in renewable energy planning.
Influence of Socioeconomic Status:
Interestingly, high-income areas with lower population densities tend to have the lowest likelihood of having an active local wind plant. This observation is intriguing and suggests that higher income alone may decrease the probability of wind power plant activity. A study on socio-economic dynamics conducted by McCright and Dunlap found “socioeconomic status significantly affects individuals’ environmental attitudes and policy preferences” (McCright & Dunlap, 2011, p. 402). Their research suggests that higher-income individuals might have different priorities or less immediate need for such infrastructure compared to lower-income communities.
An increase in median income is linked to a decrease in the odds of having an operational wind plant. Higher income areas show a lower likelihood of wind plant activity, potentially due to different local priorities or economic factors. Previous studies have found that wealthier communities often have different priorities or face different economic constraints, which can affect their engagement with renewable energy projects (Stokes & Breetz, 2018). Higher-income areas may have more access to alternative energy solutions or face less immediate pressure to implement wind infrastructure.
The presence of wind plants might be influenced by socioeconomic status in ways that reflect broader patterns of power and influence. These insights align with the notion that “economic power and market conditions influence decisions related to energy infrastructure” (Kirschen & Strbac, 2004, p. 112). Therefore, it is plausible that higher-income areas might both contribute to and benefit from a different set of energy policies compared to lower-income areas. Areas with higher incomes might prioritize other forms of energy or infrastructure development based on their resources and political connections.
Resources and Political Mobilization:
Consistent with expectations, areas with the highest population density show the highest probability of hosting wind plants in this example. This trend aligns with the assumption that regions with more people may have a higher demand for renewable energy sources like wind power. Studies have shown, “urban areas with higher population densities are often more likely to invest in environmental infrastructure, including wind energy projects” (Kahn, 2007, p. 58).
A unit increase in population density is associated with a slight increase in the odds of having an operational wind plant. This suggests that areas with higher population densities are marginally more likely to host wind plants. Areas with higher population density often have increased energy consumption due to higher demand for residential, commercial, and industrial energy (Gillingham, Stock, 2018). This increased demand may drive investment in energy infrastructure, including renewable sources such as wind power (Lund, Mathiesen, 2009). Therein, as urbanization and population density increase, it becomes increasingly feasible and advantageous for these areas to invest in and support wind energy projects.
Public opposition is an influencing factor in the siting and development of wind energy projects. Areas with higher opposition to wind infrastructure are less likely to have operational wind plants. Community opposition is a well-documented barrier to wind energy deployment, local resistance can severely impact the implementation of wind energy projects (Krohn & Damborg, 1999). This is supported by other studies that show community attitudes play a crucial role in the success of wind projects, with higher opposition correlating with reduced likelihood of project success (Wolsink, 2007). Therefore, addressing and mitigating local resistance is essential for enhancing the feasibility and acceptance of wind energy initiatives.
Code
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# ---- Plant Acitivity Visual ----#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# Summarize grouped probabilitiesprob_summary <- wind_us %>%group_by(income_label, density_label, anti_label) %>%summarise(`Probability of Active Wind Plant`=mean(status),Count =n(),.groups ="drop" ) %>%rename(`Income Percentile`= income_label,`Population Density Percentile`= density_label,`Wind Opinion`= anti_label )# Expand multipoints into points — each point gets repeated attributesprob_points <- prob_summary %>%st_cast("POINT")# Create color palettepal <-colorFactor(palette =c("#E1BE6A", "#40B0A6"),domain = prob_points$`Wind Opinion`)# Create popup content for each pointpopup_content <-paste0("<strong>Income Percentile:</strong> ", prob_points$`Income Percentile`, "<br>","<strong>Population Density Percentile:</strong> ", prob_points$`Population Density Percentile`, "<br>","<strong>Wind Opinion:</strong> ", prob_points$`Wind Opinion`, "<br>","<strong>Probability of Active Wind Plant:</strong> ", round(prob_points$`Probability of Active Wind Plant`, 3), "<br>","<strong>Count:</strong> ", prob_points$Count)leaflet(prob_points) %>%addTiles() %>%addCircleMarkers(color =~pal(`Wind Opinion`),radius =6,stroke =FALSE,fillOpacity =0.7,popup = popup_content ) %>%addLegend("bottomright",pal = pal,values =~`Wind Opinion`,title ="Wind Opinion",opacity =1 )
Code
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# ---- Wind Sentiment Tables ----#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# Split into two tables by Wind Opinionprob_summary_yes <- prob_summary %>%filter(`Wind Opinion`=="Anti-Wind") # or whatever the label is for pro windprob_summary_no <- prob_summary %>%filter(`Wind Opinion`=="Pro/Neutral") # or for anti wind# Display the table for "Anti-wind"kable(prob_summary_yes, format ="html", digits =3,caption ="Table 2: Probability of Active Wind Plant by Income and Population Density (Pro Wind Opinion)") %>%kable_styling(bootstrap_options =c("striped", "hover", "condensed", "responsive"),position ="center",font_size =12 )
Table 2: Probability of Active Wind Plant by Income and Population Density (Pro Wind Opinion)
Income Percentile
Population Density Percentile
Wind Opinion
Probability of Active Wind Plant
Count
geometry
25%
Percentile 25%
Anti-Wind
1.000
10
MULTIPOINT ((-69.76194 45.1...
25%
Percentile 50%
Anti-Wind
1.000
13
MULTIPOINT ((-86.53389 45.7...
25%
Percentile 75%
Anti-Wind
1.000
8
MULTIPOINT ((-68.14722 46.0...
25%
Percentile 100%
Anti-Wind
0.875
16
MULTIPOINT ((-68.3802 45.34...
50%
Percentile 25%
Anti-Wind
0.800
10
MULTIPOINT ((-68.2425 44.72...
50%
Percentile 50%
Anti-Wind
0.667
9
MULTIPOINT ((-70.38111 44.5...
50%
Percentile 75%
Anti-Wind
0.941
17
MULTIPOINT ((-68.86583 44.0...
50%
Percentile 100%
Anti-Wind
0.692
13
MULTIPOINT ((-74.10333 44.8...
75%
Percentile 25%
Anti-Wind
0.714
7
MULTIPOINT ((-103.3143 47.1...
75%
Percentile 50%
Anti-Wind
1.000
7
MULTIPOINT ((-71.2925 44.70...
75%
Percentile 75%
Anti-Wind
0.933
15
MULTIPOINT ((-69.35 44.4967...
75%
Percentile 100%
Anti-Wind
0.692
13
MULTIPOINT ((-102.0522 33.6...
100%
Percentile 25%
Anti-Wind
0.833
6
MULTIPOINT ((-101.22 47.167...
100%
Percentile 50%
Anti-Wind
0.857
14
MULTIPOINT ((-120.6925 47.1...
100%
Percentile 75%
Anti-Wind
0.833
18
MULTIPOINT ((-71.85629 43.6...
100%
Percentile 100%
Anti-Wind
0.714
21
MULTIPOINT ((-73.07 44.6616...
Code
# Display the table for "Pro/Neutral Wind"kable(prob_summary_no, format ="html", digits =3,caption ="Table 3: Probability of Active Wind Plant by Income and Population Density (Anti Wind Opinion)") %>%kable_styling(bootstrap_options =c("striped", "hover", "condensed", "responsive"),position ="center",font_size =12 )
Table 3: Probability of Active Wind Plant by Income and Population Density (Anti Wind Opinion)
Income Percentile
Population Density Percentile
Wind Opinion
Probability of Active Wind Plant
Count
geometry
25%
Percentile 25%
Pro/Neutral
0.989
88
MULTIPOINT ((-67.971 45.614...
25%
Percentile 50%
Pro/Neutral
0.978
46
MULTIPOINT ((-101.5547 46.9...
25%
Percentile 75%
Pro/Neutral
1.000
59
MULTIPOINT ((-67.8111 46.54...
25%
Percentile 100%
Pro/Neutral
1.000
55
MULTIPOINT ((-95.87703 45.5...
50%
Percentile 25%
Pro/Neutral
1.000
74
MULTIPOINT ((-68.14694 44.7...
50%
Percentile 50%
Pro/Neutral
1.000
67
MULTIPOINT ((-120.7531 47.1...
50%
Percentile 75%
Pro/Neutral
0.974
77
MULTIPOINT ((-70.55981 44.4...
50%
Percentile 100%
Pro/Neutral
0.929
28
MULTIPOINT ((-74.0299 44.89...
75%
Percentile 25%
Pro/Neutral
0.984
62
MULTIPOINT ((-97.8853 47.12...
75%
Percentile 50%
Pro/Neutral
0.989
89
MULTIPOINT ((-111.4392 47.4...
75%
Percentile 75%
Pro/Neutral
1.000
59
MULTIPOINT ((-94.75222 45.0...
75%
Percentile 100%
Pro/Neutral
0.977
43
MULTIPOINT ((-68.52342 44.7...
100%
Percentile 25%
Pro/Neutral
1.000
38
MULTIPOINT ((-148.9 64.0583...
100%
Percentile 50%
Pro/Neutral
1.000
50
MULTIPOINT ((-97.24166 48.9...
100%
Percentile 75%
Pro/Neutral
1.000
42
MULTIPOINT ((-162.5569 66.8...
100%
Percentile 100%
Pro/Neutral
0.981
105
MULTIPOINT ((-72.47704 44.1...
Model Considerations
The p-values for the majority of the coefficients in our models were less than the significance value of 0.05. This indicates that while our models show some trends, the results are not statistically significant enough to make strong conclusions. The lack of significance suggests that there may be insufficient evidence to definitively assess the impact of these variables on wind plant activity. However, the intercept provided a baseline log-odds of having an operational wind plant fell within the range of approximately 60% for observations in this data set. The gaps within the data for areas without operating wind plants result in heavy bias towards operating wind plants.
Techniques Applied
Single & Multivariate Logit Regression Models
Used to estimate the effects of various predictors on wind plant activity.
Logit & Log Odds
Provided insights into the relationship between predictors and the likelihood of wind plant operation.
Predictive Probability
Used to estimate the probability of operational wind plants based on predictor variables.
Ethical Critiques
Addressing limitations and potential biases in the analysis.
Limitations
Omitted Variable Bias (OVB)
The analysis may be limited by omitted variables that could influence wind plant activity. Ensuring the exogeneity of variables is challenging, and logistic regression models do not account for all underlying factors.
Insufficient Data
The data set may lack comprehensive factors affecting wind plant activity, such as specific local policies or environmental conditions.
Future Works Considerations
If given the opportunity, I would expand the dataset to include any more possible non-operational wind plants and explore in greater detail how exogenous our variables are and determine which values are likely interacting, to produce the best model fit. By expanding the dataset and refining the model, we can better understand the dynamics influencing the operational status of wind plants and make more informed conclusions. Additionally, I would bolster this analysis by identifying and including relevant variables to address the omitted variables bias present in this statistical exploration.
References
Data Citation
Replication Data for: Prevalence and Predictors of Wind Energy Opposition in North America: DOI 10.7910/DVN/LE2V0R
Collaborators: Leah Stokes, Emma Franzblau, Jessica R. Lovering, Chris Miljanich
Source: American Wind Association, Columbia Sabin Center
Citations
Stokes, Leah C., et al. “Prevalence and Predictors of Wind Energy Opposition in North America.” Proceedings of the National Academy of Sciences, vol. 120, no. 40, Sept. 2023, doi:10.1073/pnas.2302313120.
Stoke, L. C. “Front Matter.” American Journal of Political Science, vol. 60, no. 4, 2016. JSTOR, http://www.jstor.org/stable/24877456. Accessed 26 October. 2023
Kahn, M. E. (2007). Green Cities: Urban Growth and the Environment. Brookings Institution Press.
McCright, A. M., & Dunlap, R. E. (2011). The Politicization of Climate Change and Polarization in the American Public’s Views of Global Warming. Society & Natural Resources, 24(5), 398-413.
Verba, S., Schlozman, K. L., & Brady, H. E. (1995). Voice and Equality: Civic Voluntarism in American Politics. Harvard University Press.
Hertel, T. W., & Tsigas, M. E. (2002). The Role of Political Lobbying and Financial Contributions in Policy Making. In Public Policy Analysis (pp. 67-90). Routledge.
Kirschen, D. S., & Strbac, G. (2004). Fundamentals of Power System Economics. Wiley.
Gillingham, K., & Stock, J. H. (2018). The Cost of Reducing Greenhouse Gas Emissions. Journal of Economic Perspectives, 32(4), 169-190. doi:10.1257/jep.32.4.169
Lund, H., & Mathiesen, B. V. (2009). Energy system analysis of 100% renewable energy systems: The case of Denmark in years 2030 and 2050. Energy, 34(5), 524-532. doi:10.1016/j.energy.2008.10.009
Krohn, S., & Damborg, S. (1999). Public attitudes towards wind power. Renewable Energy, 16(1), 954-960. doi:10.1016/S0960-1481(98)00339-5
Wolsink, M. (2007). Wind power implementation: The nature of public beliefs and the social acceptance of renewable energy. Renewable and Sustainable Energy Reviews, 11(6), 1586-1603. doi:10.1016/j.rser.2005.10.001
Stokes, L. C., & Breetz, H. L. (2018). Public opinion and wind energy: The impact of socio-economic factors on policy support. Environmental Politics, 27(1), 1-22. doi:10.1080/09644016.2017.1387160